#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <string.h>

#define BUFFER_SIZE 128
#define READ_END 0
#define WRITE_END 1

int main(void)
{
    char write_msg[BUFFER_SIZE] = "你好，我是你的父进程!";
    char read_msg[BUFFER_SIZE];
    int fd[2];
    pid_t pid;

    /* 创建管道 */
    if (pipe(fd) == -1) {
        fprintf(stderr,"管道创建失败");
        return 1;
    }

    /* 创建子进程 */
    pid = fork();

    if (pid < 0) { /* fork失败 */
        fprintf(stderr, "Fork失败");
        return 1;
    }

    if (pid > 0) { /* 父进程 */
        close(fd[READ_END]); /* 关闭不需要的读端 */
        write(fd[WRITE_END], write_msg, strlen(write_msg)+1); /* 写入消息 */
        close(fd[WRITE_END]); /* 关闭写端 */
    } else { /* 子进程 */
        close(fd[WRITE_END]); /* 关闭不需要的写端 */
        read(fd[READ_END], read_msg, BUFFER_SIZE); /* 读取消息 */
        printf("子进程读取到: %s\n",read_msg);
        close(fd[READ_END]); /* 关闭读端 */
    }

    return 0;
}
